Personal computer systems are well known in the art. They have attained widespread use for providing computer power to many segments of today's modern society. Personal computers (PCs) may be defined as a desktop, floor standing, or portable microcomputer that includes a system unit having a central processing unit (CPU) and associated volatile and non-volatile memory, including random access memory (RAM) and basic input/output system read only memory (BIOS ROM), a system monitor, a keyboard, one or more flexible diskette drives, a CD-ROM drive, a fixed disk storage drive (also known as a “hard drive” or “hard disk drive”), a pointing device such as a mouse, and an optional network interface adapter. One of the distinguishing characteristics of these systems is the use of a motherboard or system planar to electrically connect these components together. Examples of such personal computer systems are International Business Machine Corporation's (IBM's®) PC 300, ThinkCentre, ThinkPad, Aptiva, and IntelliStation series of personal computers.
The widespread use of PCs in various segments of society has resulted in a reliance on PCs both at work and at home, such as for telecommuting, news, stock market information and trading, banking, shopping, shipping, communication in the form of hypertext transfer protocol (http) and email, as well as other services. PCs are often connected to a network such as the Internet to perform these tasks and access those services. Users gain access to the Internet by accessing a web server via personal Internet service providers (ISP's), broadband network connections, or high speed network connections through office systems. Typically, a user will view Internet or intranet content using a graphical browser application such as Microsoft Corporation's Internet Explorer, Netscape Communication Corporation's Navigator, Mozilla, Apple Corporation's Safari, etc. Browsers, at their most basic level of operation, permit users to connect to a given network site, download informational content from that site, and display that information to the user. To view additional information, the user designates a new network address (such as by selecting a link) whose contents then replace the previously displayed information on the user's computer display.
For traditional web applications, a single session is established for a user each time the user logs into the web server. Unlike desktop computers, a web server often handles many users simultaneously. A session management mechanism at the web server allows maintaining most of each user's state information (i.e., session information) at the web server while only passing necessary information (for instance, the session identifier) back to the user via cookies, Uniform Resource Locator (URL) rewriting, a Hypertext Markup Language (HTML) hidden field, etc.
The connectivity of PCs has facilitated unprecedented amounts of communication over the Internet, as more and more individuals gain access to them and an increasing number of services have become available, and such usage is expected to continue to increase. Moreover, many content providers are adding more sophisticated features such as high-resolution images, video, shopping carts, etc. As usage of the Internet has grown, it has experienced slowdowns because of the increased demands. Even though new capacity continues to be added, the demands on that capacity also continue to increase. In addition, even though the cost of network access has decreased, reduction in network traffic still can save on costs. These problems have a particular impact on e-commerce websites that often serve thousands of users across the world and require significant network traffic for each user.
Distributed computing over the Internet is one solution that has been developed to help alleviate this problem. A distributed computing system may split processing tasks among multiple servers, placing high volume, less critical applications on application servers near the user and lower volume, more critical applications on a centralized enterprise server or group of servers. For example, an e-commerce site may locate applications such as a catalog or a user's shopping cart on an application server near the user while functions such as checking-out (and purchasing items with a credit card) are performed on a central enterprise server. This allows the processing burden to be split and optimized over a large number of servers (with some closer to the user, and thus often quicker to respond) while preventing bottlenecks at the enterprise server. One provider of distributed Internet processing is Akamai Technologies, Inc.'s Akamai® EdgeComputingSM system which allows user interface applications to be deployed on servers on the “edge”, or near the user, while communicating back to the enterprise server via Web service calls. IBM's® WebSphere® Application Server Internet infrastructure software and development tools facilitate network and application deployment. Sun Microsystems, Inc.'s Java™ 2 Enterprise Edition (J2EE) may be used to provide a standard for developing component-based multi-tier enterprise applications to be used in the distributed Internet computing environment.
One common problem with distributed Internet computing environments involves managing user sessions over the multiple servers. Session data in the form of the HttpSession object of the Java Servlet Application Program Interface (API) cannot easily be shared between edge and enterprise environments, resulting in network inefficiencies in handling user requests and information. For example, when a user is an edge application server with a session for their shopping cart and desires to check out, a function often reserved for a central enterprise server, there is no easy mechanism for sharing session information. One solution to this problem is to manually code the sharing of session information into the application, but this requires advance knowledge that sharing is required, it must be maintained, and is susceptible to getting out of synchronization if not done properly. Moreover, this solution does not provide container managed capabilities inherent in J2EE.
There is, therefore, a need for an easy and effective mechanism for managing user sessions on a network over multiple servers, particular for distributed processing of applications on a network. There is an even greater need for such a system when the application is split among a central server and distributed servers.